'use strict';

/*
 *  1. 配置模块，它可以在provider提供者中进行注册，还可以再配置应用阶段进行执行。
                     只有provider和常量才能够被注入到配置块中去。
                    这样做是为了防止在配置块没有配置完成之前，意外的实例化了服务，这是不被允许的。

	2. 运行(run)块， 是在注入器被创建出来之后和被用于应用程序之后，进行执行的。
	         只有实例对象和常量能够被注入到 运行(run )块当中。
	         这样做的目的是为了防止在应用程序运行期间，增加，修改了系统配置。
 */
app
  .run(
      function ($rootScope,   $state,   $stateParams,$localStorage,$http) {
      	  //$http.defaults.headers.common['Authorization'] = 'Basic ' + $localStorage.auth;
          $rootScope.$state = $state;
          $rootScope.$stateParams = $stateParams;        
      }
  )
	.config(
      function ($stateProvider, $urlRouterProvider) {
      	  $urlRouterProvider
              .otherwise('access/login');
              
          $stateProvider
              .state('app', {
                  abstract: true,
                  url: '/app',
                  templateUrl: 'app/app.html',
              })
              .state('app.dashboard', {
                  url: '/dashboard',
                  templateUrl: 'app/dashboard.html',
              })
              .state('app.loading',{
                  url:'/loading',
                  templateUrl:'app/common/html/loading.html',
              })
              .state('app.index',{
                  url:'/index',
                  templateUrl:'app/index/index.html'
              })
              .state('app.userMgr',{
                  abstract: true,//路由继承模板基类
                  url:'/userMgr',
                  template: '<div ui-view class="fade-in"></div>',
                  resolve: {
                      deps: ['$ocLazyLoad',
                          function( $ocLazyLoad ){
                              return $ocLazyLoad.load('app/user/controller/ctrl.js');
                          }]
                  }
              })
              .state('app.userMgr.user', {
                  url: '/user',
                  templateUrl:'app/user/user.html',
                  controller:'UserListCtl'
              })
              .state('app.userRole', {
                  url: '/userRole',
                  templateUrl: 'app/user/userRole.html',
                  controller:'RoleController',
                  resolve: {
                      deps: ['$ocLazyLoad',
                          function( $ocLazyLoad ){
                              return $ocLazyLoad.load(['app/user/controller/userRoleCtrl.js']);
                          }]
                  }
              })
              .state('app.userRights', {
                  url: '/userRights',
                  templateUrl: 'app/user/userRights.html',
                  controller:'RightsController',
                  resolve: {
                      deps: ['$ocLazyLoad',
                          function( $ocLazyLoad ){
                              return $ocLazyLoad.load(['app/user/controller/userRights.js']);
                          }]
                  }
              })
              .state('access', {
                  url: '/access',
                  template: '<div ui-view class="fade-in-right-big smooth login-all"></div>'
              })
              .state('access.login', {
                  url: '/login',
                  templateUrl: 'app/login/login.html',
                  controller:'LoginController'
              });

      }
  );
  
